ইনহেরিটেন্স এবং পলিমরফিজম

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) |
256
256

ইনহেরিটেন্স (Inheritance) এবং পলিমরফিজম (Polymorphism) হলো C++ প্রোগ্রামিংয়ের অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি প্রধান ধারণা। এগুলো প্রোগ্রামে কোড পুনঃব্যবহারযোগ্যতা, সংহতি, এবং ডায়নামিক বৈশিষ্ট্য প্রদান করে, যা সফটওয়্যার ডেভেলপমেন্টকে সহজ করে তোলে।


ইনহেরিটেন্স (Inheritance)

ইনহেরিটেন্স হলো একটি প্রক্রিয়া যার মাধ্যমে একটি ক্লাস (ডেরাইভড বা সাবক্লাস) আরেকটি ক্লাসের (বেস ক্লাস বা সুপারক্লাস) গুণাবলি এবং আচরণ (ডেটা মেম্বার এবং মেম্বার ফাংশন) অর্জন করে। ইনহেরিটেন্সের মাধ্যমে কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায় এবং ক্লাসগুলির মধ্যে একটি সম্পর্ক তৈরি হয়।

উদাহরণ

ধরা যাক, আমরা একটি Vehicle বেস ক্লাস তৈরি করবো এবং তার থেকে Car এবং Bike নামের দুটি ডেরাইভড ক্লাস তৈরি করবো।

#include <iostream>
using namespace std;

// বেস ক্লাস
class Vehicle {
public:
    string brand = "Generic Brand";
    void honk() {
        cout << "Beep! Beep!" << endl;
    }
};

// ডেরাইভড ক্লাস
class Car : public Vehicle {
public:
    int doors = 4;
};

// ডেরাইভড ক্লাস
class Bike : public Vehicle {
public:
    bool hasCarrier = true;
};

int main() {
    Car myCar;
    Bike myBike;

    cout << "Car Brand: " << myCar.brand << endl;  // বেস ক্লাসের মেম্বার
    myCar.honk();  // বেস ক্লাসের মেম্বার ফাংশন
    cout << "Car Doors: " << myCar.doors << endl;

    cout << "Bike Brand: " << myBike.brand << endl;  // বেস ক্লাসের মেম্বার
    myBike.honk();  // বেস ক্লাসের মেম্বার ফাংশন
    cout << "Has Carrier: " << (myBike.hasCarrier ? "Yes" : "No") << endl;

    return 0;
}

বর্ণনা:

  • এখানে Vehicle হলো বেস ক্লাস, যা Car এবং Bike ক্লাসের জন্য ইনহেরিটেড হয়েছে।
  • Car এবং Bike তাদের নিজস্ব মেম্বার এবং বৈশিষ্ট্য ধারণ করে, তবে তারা Vehicle ক্লাসের brand মেম্বার এবং honk() মেথডও ব্যবহার করতে পারে।

ইনহেরিটেন্সের প্রকারভেদ

  1. সিঙ্গেল ইনহেরিটেন্স: একটি ক্লাস একটি মাত্র বেস ক্লাস থেকে ইনহেরিট করে।
  2. মাল্টিপল ইনহেরিটেন্স: একটি ক্লাস একাধিক বেস ক্লাস থেকে ইনহেরিট করে।
  3. মাল্টি-লেভেল ইনহেরিটেন্স: একটি ক্লাস আরেকটি ক্লাস থেকে ইনহেরিট করে, এবং সেই ক্লাসটি আরেকটি ক্লাস থেকে ইনহেরিটেড।
  4. হাইব্রিড ইনহেরিটেন্স: সিঙ্গেল, মাল্টিপল, এবং মাল্টি-লেভেল ইনহেরিটেন্সের সংমিশ্রণ।

পলিমরফিজম (Polymorphism)

পলিমরফিজম শব্দের অর্থ "একাধিক আকার ধারণ করা"। প্রোগ্রামিংয়ে এটি একটি বৈশিষ্ট্য, যার মাধ্যমে একই মেথড বা অপারেটর বিভিন্ন পরিস্থিতিতে ভিন্ন ভিন্ন আকারে কাজ করতে পারে। C++ এ পলিমরফিজম দুই প্রকার:

কাম্পাইল টাইম পলিমরফিজম:

  • ফাংশন ওভারলোডিং: একই নামের বিভিন্ন ফাংশন, যাদের প্যারামিটারের সংখ্যা বা টাইপ আলাদা।
  • অপারেটর ওভারলোডিং: অপারেটরকে বিভিন্ন ডেটা টাইপে ব্যবহার করা।

রানটাইম পলিমরফিজম:

  • ফাংশন ওভাররাইডিং: ডেরাইভড ক্লাসে বেস ক্লাসের একটি ফাংশনের নতুন সংজ্ঞা দেওয়া।
  • রানটাইম পলিমরফিজমের জন্য ভার্চুয়াল ফাংশন ব্যবহার করা হয়।

উদাহরণ: ফাংশন ওভারলোডিং (কাম্পাইল টাইম পলিমরফিজম)

#include <iostream>
using namespace std;

class Print {
public:
    void display(int i) {
        cout << "Integer: " << i << endl;
    }
    
    void display(double d) {
        cout << "Double: " << d << endl;
    }
    
    void display(string str) {
        cout << "String: " << str << endl;
    }
};

int main() {
    Print printer;
    printer.display(5);
    printer.display(3.14);
    printer.display("Hello");
    return 0;
}

বর্ণনা:

  • এখানে display ফাংশনটি একই নামে তিনবার সংজ্ঞায়িত করা হয়েছে, যা বিভিন্ন ডেটা টাইপের প্যারামিটার গ্রহণ করে।

উদাহরণ: ফাংশন ওভাররাইডিং এবং রানটাইম পলিমরফিজম

#include <iostream>
using namespace std;

class Animal {
public:
    virtual void sound() {
        cout << "Animal Sound" << endl;
    }
};

class Dog : public Animal {
public:
    void sound() override {  // বেস ক্লাসের ফাংশন ওভাররাইড করা হয়েছে
        cout << "Bark" << endl;
    }
};

class Cat : public Animal {
public:
    void sound() override {
        cout << "Meow" << endl;
    }
};

int main() {
    Animal *a1 = new Dog();
    Animal *a2 = new Cat();

    a1->sound(); // Bark
    a2->sound(); // Meow

    delete a1;
    delete a2;
    return 0;
}

বর্ণনা:

  • এখানে Animal ক্লাসে sound নামে একটি ভার্চুয়াল ফাংশন রয়েছে। Dog এবং Cat ক্লাসে এই ফাংশনটি ওভাররাইড করা হয়েছে।
  • a1 এবং a2 পয়েন্টারগুলো Animal টাইপ হলেও তারা তাদের নিজ নিজ ক্লাসের sound() ফাংশন কল করছে, যা পলিমরফিজমের উদাহরণ।

ইনহেরিটেন্স এবং পলিমরফিজমের সুবিধা

  1. কোড পুনঃব্যবহারযোগ্যতা: ইনহেরিটেন্সের মাধ্যমে কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায়, কারণ বেস ক্লাসের বৈশিষ্ট্য ডেরাইভড ক্লাসে ব্যবহার করা যায়।
  2. কোড সংহতি ও সংগতি: ইনহেরিটেন্স এবং পলিমরফিজম প্রোগ্রামে সম্পর্কযুক্ত ক্লাসগুলির মধ্যে সংহতি ও সংগতি সৃষ্টি করে।
  3. ডায়নামিক বেহেভিয়ার: পলিমরফিজমের মাধ্যমে কোডে ডায়নামিক বেহেভিয়ার যোগ করা যায়, যা বিভিন্ন অবজেক্ট একভাবে ব্যবহার করার সুযোগ দেয়।
  4. সহজ রক্ষণাবেক্ষণ: কোডের সংহতি ও পুনঃব্যবহারযোগ্যতা বৃদ্ধি পেলে প্রোগ্রাম রক্ষণাবেক্ষণ ও আপডেট করা সহজ হয়।

সারসংক্ষেপ

  • ইনহেরিটেন্স: বেস ক্লাস থেকে ডেরাইভড ক্লাসে বৈশিষ্ট্য এবং আচরণ অর্জন করার প্রক্রিয়া।
  • পলিমরফিজম: একই নামের ফাংশন বা অপারেটর বিভিন্ন ডেটা টাইপ বা পরিস্থিতিতে ভিন্নভাবে কাজ করার ক্ষমতা।
  • ফাংশন ওভারলোডিং এবং ফাংশন ওভাররাইডিং হলো পলিমরফিজমের উদাহরণ।

ইনহেরিটেন্স এবং পলিমরফিজম OOP এর শক্তিশালী বৈশিষ্ট্য, যা বড় প্রোগ্রাম ও সফটওয়্যার ডেভেলপমেন্টে কার্যকরী এবং পুনঃব্যবহারযোগ্য কোড রচনা করতে সহায়ক।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion